package com.itheima.hashset3;

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

public class TreeSetDemo {

    public static void main(String[] args) {

        //TreeSet集合对自定义对象的排序

        //Set<Teacher> ts = new TreeSet<>();

        Set<Teacher> ts = new TreeSet<>(new Comparator<Teacher>() {
            @Override
            public int compare(Teacher o1, Teacher o2) {
                //return o2.getAge() - o1.getAge();       //年龄降序

                //return (int) (o1.getSalary() - o2.getSalary());   //存在问题
                /*if (o1.getSalary() > o2.getSalary()) {
                    return 1;
                } else if (o1.getSalary() < o2.getSalary()) {
                    return -1;
                }
                return 0;*/
                return Double.compare(o1.getSalary(), o2.getSalary());  //薪资升序
            }
        });
        //Set<Teacher> ts = new TreeSet<>((o1,o2) -> Double.compare(o1.getSalary(), o2.getSalary()));  //薪资升序
        ts.add(new Teacher("张三", 20, 1999.8));
        ts.add(new Teacher("李四", 22, 2998.5));
        ts.add(new Teacher("王五", 21, 6543.5));
        ts.add(new Teacher("赵六", 20, 5534.0));      //和张三年龄相同，红黑树中数据相同不存
        ts.add(new Teacher("田七", 24, 8432.6));
        System.out.println(ts);

        //TreeSet集合默认不能自动对自定义对象排序，因为不知道排序规则
        //解决方案1：对象类实现一个Comparable<T>比较接口，重写compareTo方法，指定排序规则
        //解决方案2：TreeSet集合自带比较器对象（Comparator c），指定排序规则

        //如果两种规则都有，会优先使用集合自带的规则
    }
}
